package com.foreknow.demo04;

/**
 * 构造器(构造方法)
 * 规则：
 * 构造方法的名称要与类名相同
 * 构造方法是没有返回值类型的
 * 如果一个类中没有声明任何显示的构造方法，系统会默认提供一个无参数的构造方法
 * 如果一个类中显示的声明了一个构造方法，系统就不再提供无参数的构造方法
 * <p>
 * 语法:
 * public 类名(参数列表) {
 * <p>
 * }
 * <p>
 * 构造器在实际中有什么用处：构造器要以负责初始化的工作（初始化属性，初始化对象）
 * this表示当前对象自身
 * <p>
 * 如何调用构造方法：使用new 构造器(参数)
 */
public class ConstrctorDemo {
    String name; //null
    int age; //0
    int[] array; //null
    Person person;//null

    public ConstrctorDemo(String name, int age) {
        this.name = name;
        this.age = age;
        this.array = new int[10];
        this.person = new Person("张三");
    }

    public static void main(String[] args) {
//    ConstrctorDemo constrctorDemo = new ConstrctorDemo("tom",30);
//    System.out.println(constrctorDemo.name);
//    System.out.println(constrctorDemo.age);
        Person person = new Person("张三");
        person.name = "tom";
        System.out.println(person.name); //NullPointerException（异常）

    }
}